library(tidyverse)
Registered S3 method overwritten by 'dplyr':
  method           from
  print.rowwise_df     
Registered S3 methods overwritten by 'ggplot2':
  method         from 
  [.quosures     rlang
  c.quosures     rlang
  print.quosures rlang
Registered S3 method overwritten by 'rvest':
  method            from
  read_xml.response xml2
── Attaching packages ──────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
✔ ggplot2 3.1.1       ✔ purrr   0.3.2  
✔ tibble  2.1.1       ✔ dplyr   0.8.0.1
✔ tidyr   0.8.3       ✔ stringr 1.4.0  
✔ readr   1.3.1       ✔ forcats 0.4.0  
── Conflicts ─────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
library(plotly)
Registered S3 method overwritten by 'data.table':
  method           from
  print.data.table     
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio

Attaching package: ‘plotly’

The following object is masked from ‘package:ggplot2’:

    last_plot

The following object is masked from ‘package:stats’:

    filter

The following object is masked from ‘package:graphics’:

    layout
getStarts <- function(d){
  s = d %>% select(Stage, Nodes, Time, y) %>% 
    group_by(Stage, Nodes) %>% 
    summarise(Start=min(Time), y=min(y)) %>% arrange(Start)
  return(s)
}
RESEARCH_HOME = "/home/and/Documents/PhD/Research"
lines = readLines(paste0(RESEARCH_HOME, "/Scripts/R/Benchmarks/MultiAndSingleNode/R12/aws/monitor.txt"))
lines = lines[grepl("\\|SCALE\\|", lines)]
monitor = as_tibble(lines) %>%
  separate(value, into=c("Timestamp", "Scale", "Time", "ID", "Nodes", "Stage", "RDDs", "Task", "Dura", "Load"), sep="\\|") %>%
  separate(ID, into=c(NA, NA, "ID"), sep="_") %>%
  select(ID, Time, Nodes, Stage, RDDs, Task, Load) %>%
  mutate(Time=as.numeric(Time), RDDs=as.numeric(RDDs), Tasks=as.numeric(Task), Load=as.numeric(Load)) %>%
  group_by(ID, Time, Nodes, Stage) %>% summarise(RDDs=mean(RDDs), Tasks=mean(Tasks), Load=mean(Load))
Calling `as_tibble()` on a vector is discouraged, because the behavior is likely to change in the future. Use `tibble::enframe(name = NULL)` instead.
This warning is displayed once per session.
head(monitor)
apps = monitor %>% ungroup() %>% select(ID, Nodes) %>% distinct()
head(apps, n=Inf)
d = monitor %>% filter(ID %in% c("0028","0029","0030")) %>% ungroup %>% 
  mutate(y = Load) %>%
  select(Time, y, Nodes, Stage) %>% 
  arrange(Time) 
head(d, n=30)
p = ggplot(data = d, aes(x = Time, y = y, group = 1, color = Nodes, linetype = Nodes)) +
  geom_line() +
  geom_point(data = getStarts(d), aes(x=Start, y=y, group=1, color=Nodes, text = paste(Stage,"<br>Start:",Start,"<br>",y)))
Ignoring unknown aesthetics: text
ggplotly(p, tooltip = c("text"))
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KHBsb3RseSkKCmdldFN0YXJ0cyA8LSBmdW5jdGlvbihkKXsKICBzID0gZCAlPiUgc2VsZWN0KFN0YWdlLCBOb2RlcywgVGltZSwgeSkgJT4lIAogICAgZ3JvdXBfYnkoU3RhZ2UsIE5vZGVzKSAlPiUgCiAgICBzdW1tYXJpc2UoU3RhcnQ9bWluKFRpbWUpLCB5PW1pbih5KSkgJT4lIGFycmFuZ2UoU3RhcnQpCiAgcmV0dXJuKHMpCn0KYGBgCgpgYGB7cn0KUkVTRUFSQ0hfSE9NRSA9ICIvaG9tZS9hbmQvRG9jdW1lbnRzL1BoRC9SZXNlYXJjaCIKbGluZXMgPSByZWFkTGluZXMocGFzdGUwKFJFU0VBUkNIX0hPTUUsICIvU2NyaXB0cy9SL0JlbmNobWFya3MvTXVsdGlBbmRTaW5nbGVOb2RlL1IxMi9hd3MvbW9uaXRvci50eHQiKSkKbGluZXMgPSBsaW5lc1tncmVwbCgiXFx8U0NBTEVcXHwiLCBsaW5lcyldCm1vbml0b3IgPSBhc190aWJibGUobGluZXMpICU+JQogIHNlcGFyYXRlKHZhbHVlLCBpbnRvPWMoIlRpbWVzdGFtcCIsICJTY2FsZSIsICJUaW1lIiwgIklEIiwgIk5vZGVzIiwgIlN0YWdlIiwgIlJERHMiLCAiVGFzayIsICJEdXJhIiwgIkxvYWQiKSwgc2VwPSJcXHwiKSAlPiUKICBzZXBhcmF0ZShJRCwgaW50bz1jKE5BLCBOQSwgIklEIiksIHNlcD0iXyIpICU+JQogIHNlbGVjdChJRCwgVGltZSwgTm9kZXMsIFN0YWdlLCBSRERzLCBUYXNrLCBMb2FkKSAlPiUKICBtdXRhdGUoVGltZT1hcy5udW1lcmljKFRpbWUpLCBSRERzPWFzLm51bWVyaWMoUkREcyksIFRhc2tzPWFzLm51bWVyaWMoVGFzayksIExvYWQ9YXMubnVtZXJpYyhMb2FkKSkgJT4lCiAgZ3JvdXBfYnkoSUQsIFRpbWUsIE5vZGVzLCBTdGFnZSkgJT4lIHN1bW1hcmlzZShSRERzPW1lYW4oUkREcyksIFRhc2tzPW1lYW4oVGFza3MpLCBMb2FkPW1lYW4oTG9hZCkpCmhlYWQobW9uaXRvcikKYGBgCgpgYGB7cn0KYXBwcyA9IG1vbml0b3IgJT4lIHVuZ3JvdXAoKSAlPiUgc2VsZWN0KElELCBOb2RlcykgJT4lIGRpc3RpbmN0KCkKaGVhZChhcHBzLCBuPUluZikKYGBgCgoKYGBge3J9CmQgPSBtb25pdG9yICU+JSBmaWx0ZXIoSUQgJWluJSBjKCIwMDI4IiwiMDAyOSIsIjAwMzAiKSkgJT4lIHVuZ3JvdXAgJT4lIAogIG11dGF0ZSh5ID0gTG9hZCkgJT4lCiAgc2VsZWN0KFRpbWUsIHksIE5vZGVzLCBTdGFnZSkgJT4lIAogIGFycmFuZ2UoVGltZSkgCgpoZWFkKGQsIG49MzApCmBgYAoKYGBge3J9CnAgPSBnZ3Bsb3QoZGF0YSA9IGQsIGFlcyh4ID0gVGltZSwgeSA9IHksIGdyb3VwID0gMSwgY29sb3IgPSBOb2RlcywgbGluZXR5cGUgPSBOb2RlcykpICsKICBnZW9tX2xpbmUoKSArCiAgZ2VvbV9wb2ludChkYXRhID0gZ2V0U3RhcnRzKGQpLCBhZXMoeD1TdGFydCwgeT15LCBncm91cD0xLCBjb2xvcj1Ob2RlcywgdGV4dCA9IHBhc3RlKFN0YWdlLCI8YnI+U3RhcnQ6IixTdGFydCwiPGJyPiIseSkpKQpgYGAKCmBgYHtyfQpnZ3Bsb3RseShwLCB0b29sdGlwID0gYygidGV4dCIpKQpgYGAKCgo=